var strSimbolo = "L ";
var $strAcademicoCobrosContabilizacionUrl = "admin_academico_cobros_contabilizacion_data.php";
var $strAcademicoCobrosContabilizacionForm = "frmAcademicoCobrosContabilizacion";

function fntAnulaCobro(p){
    if(confirm('Esta seguro de anular este cobro sin contabilizar?')){
        $("#cobrosanulacion").dialog("close");
        $("#contenidocobrosanulacion").hide();
        $("#contenidocobrosanulacion").appendTo( $("#divAcademicoCobrosContabilizacionFacturas"));
        
        $.ajax({
            type: "POST",
            data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize()+"&"+p,
            url: $strAcademicoCobrosContabilizacionUrl+"?operation=anulacobro",
            success:function(data) {
                fntAcademicoCobrosContabilizacionFacturas();
                fntShowDetalleAnulacion(data);                
            }
        });
    }
}

function fntShowDetalleAnulacion(p){
    var objInterface = $("#cobrosanulacion");
    objInterface.html("");
    $.ajax({
        type: "POST",
        data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize()+"&"+p,
        url: $strAcademicoCobrosContabilizacionUrl+"?operation=showdetalleanulacion",
        beforeSend:function() {
            fntOpenDialogCargando();
        },
        success:function(data) {
            objInterface.html(data);  
            $("#cobrosanulacion").html(data);
            $("#cobrosanulacion").dialog("open");
            fntCloseDialogCargando();            
            $("button").button()
        },
        error:function() {
            fntCloseDialogCargando();
        }
    });
}

function fntAcademicoCobrosContabilizacionEmpresa() {
    var objInterface = $("#divAcademicoCobrosContabilizacionEmpresa");
    objInterface.html("");
    $.ajax({
        type: "POST",
        data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize(),
        url: $strAcademicoCobrosContabilizacionUrl+"?operation=e",
        beforeSend:function() {
            fntOpenDialogCargando();
        },
        success:function(data) {
            objInterface.html(data);
            fntCloseDialogCargando();
            fntAcademicoCobrosContabilizacionFacturas();
        },
        error:function() {
            fntCloseDialogCargando();
        }

    });

}
function fntAcademicoCobrosContabilizacionFacturas() {
    var objInterface = $("#divAcademicoCobrosContabilizacionFacturas");	
    var parametros=$("#"+$strAcademicoCobrosContabilizacionForm).serialize()
    objInterface.html("");	
    $.ajax({
        type: "POST",
        data: parametros,
        url: $strAcademicoCobrosContabilizacionUrl+"?operation=f",
        beforeSend:function() {
            fntOpenDialogCargando();
        },
        success:function(data) {
            objInterface.html(data);
            fntCloseDialogCargando();
        },
        error:function() {
            fntCloseDialogCargando();
        }

    });
}
function fntAcademicoCobrosContabilizacionPartida(parametros) {    
    var objInterface = $("#divAcademicoCobrosContabilizacionPartida");
    objInterface.html("");
    $.ajax({

        type: "POST",
        data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize(),
        url: $strAcademicoCobrosContabilizacionUrl+"?operation=p&"+parametros,
        beforeSend:function() {
            fntOpenDialogCargando();
        },
        success:function(data) {
            objInterface.html(data);
            fntCloseDialogCargando();
        },
        error:function() {
            fntCloseDialogCargando();
        }

    });


}
var intCorrelativo = 1;
function drawNewLine(id, strCuentaId, strCuentaNombre, strTipo, strMonto ) {
    
    var strHTML = "";
    var strStyle = "";
    var empresa = 0;
    var boolEdit = true;
    if( typeof(strCuentaId) == "undefined" ) {
        strCuentaId = "";
        strCuentaIdNombre = "";   
    }
    else {
        boolEdit = false;
        strCuentaIdNombre = strCuentaId+" - "+strCuentaNombre;
    }
    if( typeof(strCuentaNombre) == "undefined" ) strCuentaNombre = "";
    if( typeof(strTipo) == "undefined" ) strTipo = "";
    if( typeof(strMonto) == "undefined" ) {
        strMonto = "";
        strMontoDebe = "";
        strMontoHaber = "";
    }
    else {
        strStyle = "display:none";
        if( strTipo=="d" ) {
            strMontoDebe = strMonto;            
            strMontoHaber = "";
        }
        if( strTipo=="h" ) {
            strMontoDebe = "";
            strMontoHaber = strMonto;
        }
    }
    
    strHTML =   '<div style="float: left; width: 400px; height: 30px; text-align:left;">'
    +'<input type="text" name="txtSerch_'+id+'" id="txtSerch_'+id+'" value="" size = "50" style="'+strStyle+'" />'
    +'<input type="hidden" name="hdnCuenta_'+id+'" id="hdnCuenta_'+id+'" value="'+strCuentaId+'" />'
    +'<div id="divCuenta_'+id+'" title="Hacer doble click para seleccionar otra cuenta." style="text-align:left;">'+strCuentaIdNombre+'</div>'
    +'</div>'
    +'<div style="float: left; width: 200px; height: 30px;"><input type="text" name="txtDebe_'+id+'" id="txtDebe_'+id+'" value="'+strMontoDebe+'" style="text-align: right;"></div>'
    +'<div style="float: left; width: 200px; height: 30px;"><input type="text" name="txtHaber_'+id+'" id="txtHaber_'+id+'" value="'+strMontoHaber+'" style="text-align: right;"></div>';
    $("#frmPartidas-detalle").append(strHTML);
    
    
    $("select[name='sltAcademicoCobrosContabilizacionEmpresas'] option:selected").each( function() {
        empresa = $(this).val();
    });
    
    $("#txtSerch_"+id).autocomplete({
        
        source: "admin_contabilidad_partidas_data.php?operation=cgcun&empresa="+intEmpresa,
        minLength: 1,
        select: function( event, ui ) {
            
            //if( !checkCuentas(ui.item.id) ) {
            $("input[name='hdnCuenta_"+id+"']").val(ui.item.id);
            $("#divCuenta_"+id).html(ui.item.value);
            $(this).hide();
            if( $( "#txtDebe_"+id).val().length > 0 || $("#txtHaber_"+id).val().length > 0 ) {
                intCorrelativo++;
                drawNewLine(intCorrelativo);
                getTotales();
                $("#txtSerch_"+intCorrelativo).select();
            }
        /*}
            else {
                alert("¡Cuenta ya seleccionada!");
                $("#txtSerch_"+id).select();
            }*/
            
        }
                
    });
    
    $("#txtDebe_"+id).keyup(function() {
        
        nextID = id + 1 * 1;
        if( $(this).val().length > 0 && $("#txtSerch_"+nextID).length == 0 && $("#hdnCuenta_"+id).val().length > 0 ) {
            
            intCorrelativo++;
            drawNewLine(intCorrelativo);
            getTotales();
        //$("#txtSerch_"+intCorrelativo).select();
            
        }
    });
    
    $("#txtHaber_"+id).keyup(function() {
        
        nextID = id + 1 * 1;
        if( $(this).val().length > 0 && $("#txtSerch_"+nextID).length == 0  && $("#hdnCuenta_"+id).val().length > 0 ) {
            
            intCorrelativo++;
            drawNewLine(intCorrelativo);
            getTotales();
        //$("#txtSerch_"+intCorrelativo).select();
            
        }
    });
    
    $("#txtDebe_"+id).keyup(function() {
        if( $(this).val().length > 0 ) {
            $("#txtHaber_"+id).hide();
        }
        else {
            $("#txtHaber_"+id).show();
        }
        
        getTotales();
    });
    
    $("#txtHaber_"+id).keyup(function() {
        if( $(this).val().length > 0 ) {
            $("#txtDebe_"+id).hide();
        }
        else {
            $("#txtDebe_"+id).show();
        }
        
        getTotales();
    });
    
    $("input[name='txtDebe_"+id+"']").blur(function() {
        $(this).formatCurrency({
            colorize: true, 
            negativeFormat: '-%s%n', 
            roundToDecimalPlace: 2, 
            symbol: strSimbolo
        });
    }).keyup(function(e) {
        var e = window.event || e;
        var keyUnicode = e.charCode || e.keyCode;
        if (e !== undefined) {
            switch (keyUnicode) {
                case 16:
                    break; // Shift
                case 17:
                    break; // Ctrl
                case 18:
                    break; // Alt
                case 27:
                    this.value = '';
                    break; // Esc: clear entry
                case 35:
                    break; // End
                case 36:
                    break; // Home
                case 37:
                    break; // cursor left
                case 38:
                    break; // cursor up
                case 39:
                    break; // cursor right
                case 40:
                    break; // cursor down
                case 78:
                    break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                case 110:
                    break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                case 190:
                    break; // .
                default:
                    $(this).formatCurrency({
                        colorize: true, 
                        negativeFormat: '-%s%n', 
                        roundToDecimalPlace: -1, 
                        symbol: strSimbolo, 
                        eventOnDecimalsEntered: true
                    });
            }
        }
    });
    
    $("input[name='txtHaber_"+id+"']").blur(function() {
        $(this).formatCurrency({
            colorize: true, 
            negativeFormat: '-%s%n', 
            roundToDecimalPlace: 2, 
            symbol: strSimbolo
        });
    }).keyup(function(e) {
        var e = window.event || e;
        var keyUnicode = e.charCode || e.keyCode;
        if (e !== undefined) {
            switch (keyUnicode) {
                case 16:
                    break; // Shift
                case 17:
                    break; // Ctrl
                case 18:
                    break; // Alt
                case 27:
                    this.value = '';
                    break; // Esc: clear entry
                case 35:
                    break; // End
                case 36:
                    break; // Home
                case 37:
                    break; // cursor left
                case 38:
                    break; // cursor up
                case 39:
                    break; // cursor right
                case 40:
                    break; // cursor down
                case 78:
                    break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                case 110:
                    break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                case 190:
                    break; // .
                default:
                    $(this).formatCurrency({
                        colorize: true, 
                        negativeFormat: '-%s%n', 
                        roundToDecimalPlace: -1, 
                        symbol: strSimbolo, 
                        eventOnDecimalsEntered: true
                    });
            }
        }
    });
    $("input[name='txtDebe_"+id+"']").formatCurrency({
        colorize: true, 
        negativeFormat: '-%s%n', 
        roundToDecimalPlace: 2, 
        symbol: strSimbolo
    });
    $("input[name='txtHaber_"+id+"']").formatCurrency({
        colorize: true, 
        negativeFormat: '-%s%n', 
        roundToDecimalPlace: 2, 
        symbol: strSimbolo
    });
    
    if( boolEdit ) {
        $("#divCuenta_"+id).dblclick( function () { 
            $("input[name='hdnCuenta_"+id+"']").val("");
            $(this).html("");
            $("#txtSerch_"+id).show();
            $("#txtSerch_"+id).select();
        });
    }
    else {
        if( $("#txtDebe_"+id).val().length > 0 ) {
            $("#txtHaber_"+id).hide();
        }
        if( $("#txtHaber_"+id).val().length > 0 ) {
            $("#txtDebe_"+id).hide();
        }
        getTotales();
    }
}

function getTotales() {
    sinTotalDebe = 0;
    sinTotalHaber = 0;
    
    $("input[name*='txtDebe_']").each( function() {
        arrSplit = $(this).attr("name").split("_");
        
        if( $("#hdnCuenta_"+arrSplit[1]).val().length > 0 ) {
            sinTotalDebe += $(this).asNumber() * 1;
            sinTotalDebe = sinTotalDebe * 100;
            sinTotalDebe = Math.round(sinTotalDebe);
            sinTotalDebe = sinTotalDebe / 100;
        }
    });
    
    $("input[name*='txtHaber_']").each( function() {
        arrSplit = $(this).attr("name").split("_");
        
        if( $("#hdnCuenta_"+arrSplit[1]).val().length > 0 ) {
            sinTotalHaber += $(this).asNumber() * 1;
            sinTotalHaber = sinTotalHaber * 100;
            sinTotalHaber = Math.round(sinTotalHaber);
            sinTotalHaber = sinTotalHaber / 100;
        }
            
    });
    var sinTotalD = new Number( sinTotalDebe );
    sinTotalDebe = sinTotalD.toFixed(2);
    var sinTotalH = new Number( sinTotalHaber );
    sinTotalHaber = sinTotalH.toFixed(2);
    
    $("input[name='txtTotalDebe']").val(sinTotalDebe);
    $("input[name='txtTotalHaber']").val(sinTotalHaber);
    
    $('input[name="txtTotalDebe"]').formatCurrency({
        colorize: true, 
        negativeFormat: '-%s%n', 
        roundToDecimalPlace: 2, 
        symbol: strSimbolo
    });
    $('input[name="txtTotalHaber"]').formatCurrency({
        colorize: true, 
        negativeFormat: '-%s%n', 
        roundToDecimalPlace: 2, 
        symbol: strSimbolo
    });
    
    if( sinTotalDebe == sinTotalHaber ) {
        $("#btnAcademicoCobrosContabilizacionGrabar").button( "enable" );
    }
    else {
        $("#btnAcademicoCobrosContabilizacionGrabar").button( "disable" );
    }
}
function checkCuentas(id) {
    boolReturn = false;
    $("input[name*='hdnCuenta_']").each( function() {
        
        if( $(this).val() == id ) boolReturn = true;
        
    });        
    
    return boolReturn;        
}
function fntAcademicoCobrosContabilizacionValidar() {
    
    strError = "";
    boolRetorna = true;
    
    
    if( ($("input[name='hdnAcademicoCobrosContabilizacionMonto']").val()*1) != 
        ($("input[name='txtTotalDebe']").asNumber()*1) ) {
        boolRetorna = false;
        strError = "La partida no cuadra con el total de la factura.";        
    }
    
    if( !boolRetorna ) {
        alert(strError);
    }
    
    return boolRetorna;
    
}
function fntAcademicoCobrosContabilizacionGrabar() {    
    var objInterface = $("#divAcademicoCobrosContabilizacionMensajes");
    objInterface.html("");
    
    if( fntAcademicoCobrosContabilizacionValidar() ) {
        
        $('input[name*="txtDebe_"]').toNumber();
        $('input[name*="txtHaber_"]').toNumber();
        $('input[name="txtTotalDebe"]').toNumber();
        $('input[name="txtTotalHaber"]').toNumber();        
        
        $.ajax({
            type: "POST",
            data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize(),
            url: $strAcademicoCobrosContabilizacionUrl+"?operation=s",
            beforeSend:function() {
                fntOpenDialogCargando();
            },
            success:function(data) {
                objInterface.html(data);
                fntCloseDialogCargando();
            },
            error:function() {
                fntCloseDialogCargando();
            }
        });
    }    
}
function fntAcademicoCobrosContabShowCargos() {
    var objInterface = $("#cargoslist");
    objInterface.html("");
    $.ajax({
        type: "POST",
        data: $("#"+$strAcademicoCobrosContabilizacionForm).serialize(),
        url: $strAcademicoCobrosContabilizacionUrl+"?operation=cargos",
        beforeSend:function() {
            fntOpenDialogCargando();
        },
        success:function(data) {
            objInterface.html(data);
            fntCloseDialogCargando();
        },
        error:function() {
            fntCloseDialogCargando();
        }

    });    
}
$(function() {
    fntAcademicoCobrosContabilizacionEmpresa();	
});